Skip to content

ref(alerts): remove dead standalone SystemAlerts mount#115222

Merged
evanpurkhiser merged 1 commit into
masterfrom
evanpurkhiser/ref-alerts-remove-dead-standalone-systemalerts-mount
May 11, 2026
Merged

ref(alerts): remove dead standalone SystemAlerts mount#115222
evanpurkhiser merged 1 commit into
masterfrom
evanpurkhiser/ref-alerts-remove-dead-standalone-systemalerts-mount

Conversation

@evanpurkhiser
Copy link
Copy Markdown
Member

The standalone <SystemAlerts> mount at #blk_alerts (rendered as a separate React tree on every page that extends layout.html) has been dead plumbing since the React+Reflux era began in 2015.

Verified across the full git history (git log -S for AlertStore.addAlert, AlertActions.addAlert, addAlert in *.html, SentryApp.AlertStore, Sentry.AlertActions, etc.) — no Django template, plugin, or external code has ever pushed alerts via this mount. Every AlertStore producer lives inside the SPA's <App> tree, which renders its own <SystemAlerts> via appBodyContent.tsx / organizationLayout/index.tsx. Django flash messages render server-side via the {% if messages %} block in this same template, never through React.

The matching frontend cleanup (removing SYSTEM_ALERTS from processInitQueue's COMPONENT_MAP and the SentryInitRenderReactComponent enum, plus the corresponding test) ships as a separate PR per the frontend/backend split rule. Either PR can land first — the frontend gracefully skips unknown component names via Object.hasOwn(COMPONENT_MAP, ...).

The <Indicators> standalone mount is intentionally preserved — it is genuinely live and needed by the Setup Wizard flow (a non-SPA page that calls addErrorMessage from wizardProjectSelection.tsx).

The standalone <SystemAlerts> mount at #blk_alerts has been dead plumbing
since at least 2015. No code path — Django template, plugin, or otherwise —
ever pushed alerts that surfaced via this mount; all AlertStore producers
live inside the SPA's <App> tree, which renders its own <SystemAlerts>.
Django flash messages render server-side via the {% if messages %} block
in this same template, never through React.

The corresponding frontend cleanup (removing SYSTEM_ALERTS from the init
queue) ships separately.
@evanpurkhiser evanpurkhiser requested a review from a team as a code owner May 8, 2026 19:58
@github-actions github-actions Bot added the Scope: Backend Automatically applied to PRs that change backend components label May 8, 2026
@evanpurkhiser evanpurkhiser merged commit 3f55b7b into master May 11, 2026
54 checks passed
@evanpurkhiser evanpurkhiser deleted the evanpurkhiser/ref-alerts-remove-dead-standalone-systemalerts-mount branch May 11, 2026 16:22
evanpurkhiser added a commit that referenced this pull request May 11, 2026
…5223)

The Django template `partial/alerts.html` no longer pushes a
`SystemAlerts` `renderReact` config onto `window.__onSentryInit` (see
#115222). Drop the corresponding frontend entry from
`processInitQueue`'s `COMPONENT_MAP`, the
`SentryInitRenderReactComponent` enum, and the now-orphaned test.

The standalone `<SystemAlerts>` mount has been dead plumbing since the
React/Reflux era began in 2015 — see the linked backend PR for the full
history trek. Every `AlertStore` producer lives inside the SPA's `<App>`
tree, which renders its own `<SystemAlerts>`.

`SystemAlerts` itself stays — only its registration in the init queue is
removed. The component continues to be mounted in-tree by
`appBodyContent.tsx` and `organizationLayout/index.tsx`.
dashed pushed a commit that referenced this pull request May 11, 2026
The standalone `<SystemAlerts>` mount at `#blk_alerts` (rendered as a
separate React tree on every page that extends `layout.html`) has been
dead plumbing since the React+Reflux era began in 2015.

Verified across the full git history (`git log -S` for
`AlertStore.addAlert`, `AlertActions.addAlert`, `addAlert` in `*.html`,
`SentryApp.AlertStore`, `Sentry.AlertActions`, etc.) — no Django
template, plugin, or external code has ever pushed alerts via this
mount. Every `AlertStore` producer lives inside the SPA's `<App>` tree,
which renders its own `<SystemAlerts>` via `appBodyContent.tsx` /
`organizationLayout/index.tsx`. Django flash messages render server-side
via the `{% if messages %}` block in this same template, never through
React.

The matching frontend cleanup (removing `SYSTEM_ALERTS` from
`processInitQueue`'s `COMPONENT_MAP` and the
`SentryInitRenderReactComponent` enum, plus the corresponding test)
ships as a separate PR per the frontend/backend split rule. Either PR
can land first — the frontend gracefully skips unknown component names
via `Object.hasOwn(COMPONENT_MAP, ...)`.

The `<Indicators>` standalone mount is intentionally preserved — it is
genuinely live and needed by the Setup Wizard flow (a non-SPA page that
calls `addErrorMessage` from `wizardProjectSelection.tsx`).
dashed pushed a commit that referenced this pull request May 11, 2026
…5223)

The Django template `partial/alerts.html` no longer pushes a
`SystemAlerts` `renderReact` config onto `window.__onSentryInit` (see
#115222). Drop the corresponding frontend entry from
`processInitQueue`'s `COMPONENT_MAP`, the
`SentryInitRenderReactComponent` enum, and the now-orphaned test.

The standalone `<SystemAlerts>` mount has been dead plumbing since the
React/Reflux era began in 2015 — see the linked backend PR for the full
history trek. Every `AlertStore` producer lives inside the SPA's `<App>`
tree, which renders its own `<SystemAlerts>`.

`SystemAlerts` itself stays — only its registration in the init queue is
removed. The component continues to be mounted in-tree by
`appBodyContent.tsx` and `organizationLayout/index.tsx`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants